home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / edo / rex / deentest.bas < prev    next >
BASIC Source File  |  1994-06-01  |  2KB  |  31 lines

  1. 10 'Encode-Decode Test Program
  2. 20 CLEAR ,,1024,970000,68192:DEFINT A-Z:LOADM "h:bas_lib.rex",0:LOADM "h:slide.rex",8192:BL=0:SL=8192
  3. 30 DIM TBUF%(163839),IB%(163839),GBP%(511):DEF FNSKEY&(A&)=CALLM(BL,8):DEF FNFS&(F$)=CALLM(0,14,VARPTR(F$))
  4. 40 PRINT "get started! (E : Encode / D : Decode)":A$=INPUT$(1):IF INSTR("EeDd",A$)=0 THEN 50 ELSE IF A$="D" OR A$="d" THEN *DECODE
  5. 50 *ENCODE:F$="a:\sample.tif"+CHR$(0):FO$="a:\sample.cmp"+CHR$(0)
  6. 60 RSIZE&=FNFS&(F$):IF RSIZE&<0 THEN *ERROR
  7. 70 IF RSIZE&>(163839+1)*2 THEN PRINT "filesize too big!!":END
  8. 80 A&=CALLM(BL,12,&H14,VARPTR(TBUF%(0)),VARPTR(F$),0,RSIZE&)
  9. 90 IF A&<0 THEN *ERROR
  10. 100 A&=CALLM(SL,0,VARPTR(GBP%(0)),VARPTR(TBUF%(0)),RSIZE&,1024,PEEK(VARPTR(FO$),4),1) '圧縮
  11. 110 IF A&<1 THEN *ENCODE_ERROR
  12. 120 A&=CALLM(BL,11,&H14,VARPTR(RSIZE&),VARPTR(FO$),-1,4) '復元の為に元のデータサイズを付加する
  13. 130 END
  14. 200 *DECODE:FI$="a:\sample.cmp"+CHR$(0):FD$="a:\samplorg.tif"+CHR$(0)
  15. 210 OSIZE&=0:RSIZE&=FNFS&(FI$):IF RSIZE&<0 THEN *ERROR
  16. 220 A&=CALLM(BL,12,&H14,VARPTR(OSIZE&),VARPTR(FI$),RSIZE&-4,4) '元のデータのサイズを読み込む
  17. 230 IF A&<0 THEN *ERROR
  18. 240 A&=CALLM(BL,12,&H14,VARPTR(IB%(0)),VARPTR(FI$),0,RSIZE&-4) '圧縮されたデータを読み込む
  19. 250 IF A&<0 THEN *ERROR
  20. 260 A&=CALLM(SL,1,VARPTR(TBUF%(0)),VARPTR(IB%(0)),OSIZE&,0,0,RSIZE&-4) '復元
  21. 270 IF A&<>OSIZE& THEN PRINT "Illegal Data Format":END
  22. 280 A&=CALLM(BL,16,&H14,VARPTR(TBUF%(0)),VARPTR(FD$),0,OSIZE&) '復元データ書き出し
  23. 290 END
  24. 500 *ERROR
  25. 510 PRINT USING "REXルーチンからエラーが返されました CODE(########)";A& AND &H7FFFFFFF;
  26. 520 END
  27. 550 *ENCODE_ERROR
  28. 560 IF A&=-2 THEN PRINT "圧縮後のデータサイズが、元のデータより大きくなりました"
  29. 570 IF A&=0 THEN PRINT "元データが短すぎます"
  30. 580 GOTO *ERROR
  31.